public class Solution {
    public int rob(int[] nums) {
// f[i]为偷到i位置时，i位置必偷
// g[i]为偷到i位置时，i位置不偷
        if(nums==null||nums.length==0){
            return 0;
        }

        int n=nums.length;
        int[] f = new int[n];
        int[] g = new int[n];

        f[0]=nums[0];
        g[0]=0;
        int i=1;
        for(;i<n;i++){
            f[i]=nums[i]+g[i-1];
            g[i]=Math.max(f[i-1],g[i-1]);
        }

        return Math.max(f[i-1],g[i-1]);

    }
}